package com.clp.protocol.core.client;

import java.util.Collection;

/**
 * 客户端事件监听器 注册器
 */
public interface ClientEventListenerRegistrar<C> {

    /**
     * 添加事件监听器
     * @param listener
     * @param <E>
     */
    <E extends ClientEvent<C>> void addEventListener(ClientEventListener<E> listener);

    <E extends ClientEvent<C>> void addEventListeners(Collection<ClientEventListener<E>> listeners);

    /**
     * 移除事件监听器
     * @param listener
     * @param <E>
     */
    <E extends ClientEvent<C>> void removeEventListener(ClientEventListener<E> listener);

    <E extends ClientEvent<C>> void removeEventListeners(Collection<ClientEventListener<E>> listeners);

}
